<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
// [js] 举例说明数组和对象的迭代方法分别有哪些？

Array
forEach method arr.forEach((val, idx, arr) => { ... }, thisArg)
for...of (Symbol.iterator) for (let val of arr) { ... }
for...in (Enumerable Keys) for (let key in arr) { ... }
Object
for...in (Enumerable Keys) for (let key in obj) { ... }
Object static method + for...of
for (let key of Object.keys(obj)) { ... }
for (let [key, val] of Object.entries(obj)) { ... }

ES5中为数组定义了5个迭代方法。每个方法都要接收两个参数：要在每一项上面运行的函数和（可选的）运行该函数的作用域对象---影响this的值。
1.every()和some();
every()：对数组中的每一项运行给定函数，如果每一项都返回true，则返回true，否则false；
some()：对数组中的每一项运行给定函数，如果至少有一项返回true，则返回true，否则false；
2.map()和filter();
filter()：对数组中的每一项给定函数，返回值为true的项重新组成新的数组；
map()：岁数组中的每一项给定函数，返回每一项调用这个函数的结果；
3.forEach();
forEach()：对方法中的每一项运行给定函数。这个方法没有返回值；
迭代对象:
用for-in遍历对象
用for-of遍历类数组对象（ES6）
用Object.keys()获取对象属性名的集合
</script>
</html>